using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using System.IO;
using System.Text;

using NUnit.Framework;

using Mono.Cecil;

using Xamarin.Utils;
using Xamarin.Tests;

#nullable enable

namespace Cecil.Tests {

	[TestFixture]
	public class ProtocolTest {
		// This test asserts that newly bound protocols set 'BackwardsCompatibleCodeGeneration = false'
		[Test]
		public void MustSetBackwardsCompatibleCodeGenerationToFalse ()
		{
			var found = new HashSet<string> ();
			foreach (var info in Helper.NetPlatformAssemblyDefinitions) {
				var assembly = info.Assembly;
				foreach (var type in assembly.EnumerateTypes (v => v.IsInterface)) {
					if (!type.HasCustomAttributes)
						continue;
					var hasProtocolAttribute = false;
					var hasProtocolMemberAttribute = false;
					bool? isBackwardsCompatible = null;
					foreach (var ca in type.CustomAttributes) {
						if (ca.AttributeType.Is ("Foundation", "ProtocolAttribute")) {
							hasProtocolAttribute = true;
							foreach (var prop in ca.Properties) {
								if (prop.Name == "BackwardsCompatibleCodeGeneration") {
									isBackwardsCompatible = (bool) prop.Argument.Value;
									break;
								}
							}
						}
						hasProtocolMemberAttribute |= ca.AttributeType.Is ("Foundation", "ProtocolMemberAttribute");
					}
					if (!hasProtocolAttribute)
						continue;
					if (!hasProtocolMemberAttribute)
						continue; // doesn't need to be compatible if it doesn't have any members.
					if (isBackwardsCompatible == false)
						continue;
					found.Add (type.FullName);
				}
			}

			var expectedFailures = new HashSet<string> {
#if !XAMCORE_5_0
				"Accessibility.IAXBrailleMapRenderer",
				"Accessibility.IAXChart",
				"Accessibility.IAXCustomContentProvider",
				"Accessibility.IAXDataAxisDescriptor",
				"AddressBookUI.IABNewPersonViewControllerDelegate",
				"AddressBookUI.IABPeoplePickerNavigationControllerDelegate",
				"AddressBookUI.IABPersonViewControllerDelegate",
				"AddressBookUI.IABUnknownPersonViewControllerDelegate",
				"AppKit.INSAccessibility",
				"AppKit.INSAccessibilityButton",
				"AppKit.INSAccessibilityCheckBox",
				"AppKit.INSAccessibilityColor",
				"AppKit.INSAccessibilityContainsTransientUI",
				"AppKit.INSAccessibilityCustomRotorItemSearchDelegate",
				"AppKit.INSAccessibilityElementLoading",
				"AppKit.INSAccessibilityElementProtocol",
				"AppKit.INSAccessibilityImage",
				"AppKit.INSAccessibilityLayoutArea",
				"AppKit.INSAccessibilityLayoutItem",
				"AppKit.INSAccessibilityNavigableStaticText",
				"AppKit.INSAccessibilityProgressIndicator",
				"AppKit.INSAccessibilityRadioButton",
				"AppKit.INSAccessibilityRow",
				"AppKit.INSAccessibilitySlider",
				"AppKit.INSAccessibilityStaticText",
				"AppKit.INSAccessibilityStepper",
				"AppKit.INSAccessibilitySwitch",
				"AppKit.INSAccessibilityTable",
				"AppKit.INSAlertDelegate",
				"AppKit.INSAnimationDelegate",
				"AppKit.INSAppearanceCustomization",
				"AppKit.INSApplicationDelegate",
				"AppKit.INSBrowserDelegate",
				"AppKit.INSCandidateListTouchBarItemDelegate",
				"AppKit.INSCloudSharingServiceDelegate",
				"AppKit.INSCloudSharingValidation",
				"AppKit.INSCollectionLayoutContainer",
				"AppKit.INSCollectionLayoutEnvironment",
				"AppKit.INSCollectionLayoutVisibleItem",
				"AppKit.INSCollectionViewDataSource",
				"AppKit.INSCollectionViewDelegate",
				"AppKit.INSCollectionViewDelegateFlowLayout",
				"AppKit.INSCollectionViewElement",
				"AppKit.INSCollectionViewPrefetching",
				"AppKit.INSCollectionViewSectionHeaderView",
				"AppKit.INSColorChanging",
				"AppKit.INSComboBoxCellDataSource",
				"AppKit.INSComboBoxDataSource",
				"AppKit.INSComboBoxDelegate",
				"AppKit.INSControlTextEditingDelegate",
				"AppKit.INSDatePickerCellDelegate",
				"AppKit.INSDockTilePlugIn",
				"AppKit.INSDraggingDestination",
				"AppKit.INSDraggingInfo",
				"AppKit.INSDraggingSource",
				"AppKit.INSDrawerDelegate",
				"AppKit.INSEditor",
				"AppKit.INSEditorRegistration",
				"AppKit.INSFilePromiseProviderDelegate",
				"AppKit.INSFontChanging",
				"AppKit.INSGestureRecognizerDelegate",
				"AppKit.INSHapticFeedbackPerformer",
				"AppKit.INSImageDelegate",
				"AppKit.INSLayerDelegateContentsScaleUpdating",
				"AppKit.INSLayoutManagerDelegate",
				"AppKit.INSMenuDelegate",
				"AppKit.INSMenuItemValidation",
				"AppKit.INSMenuValidation",
				"AppKit.INSOpenSavePanelDelegate",
				"AppKit.INSOutlineViewDataSource",
				"AppKit.INSOutlineViewDelegate",
				"AppKit.INSPageControllerDelegate",
				"AppKit.INSPasteboardItemDataProvider",
				"AppKit.INSPasteboardReading",
				"AppKit.INSPasteboardTypeOwner",
				"AppKit.INSPasteboardWriting",
				"AppKit.INSPathCellDelegate",
				"AppKit.INSPathControlDelegate",
				"AppKit.INSPopoverDelegate",
				"AppKit.INSPreviewRepresentableActivityItem",
				"AppKit.INSPrintPanelAccessorizing",
				"AppKit.INSRuleEditorDelegate",
				"AppKit.INSScrubberDataSource",
				"AppKit.INSScrubberDelegate",
				"AppKit.INSScrubberFlowLayoutDelegate",
				"AppKit.INSSearchFieldDelegate",
				"AppKit.INSSeguePerforming",
				"AppKit.INSServicesMenuRequestor",
				"AppKit.INSSharingServiceDelegate",
				"AppKit.INSSharingServicePickerDelegate",
				"AppKit.INSSharingServicePickerToolbarItemDelegate",
				"AppKit.INSSharingServicePickerTouchBarItemDelegate",
				"AppKit.INSSoundDelegate",
				"AppKit.INSSpeechRecognizerDelegate",
				"AppKit.INSSpeechSynthesizerDelegate",
				"AppKit.INSSplitViewDelegate",
				"AppKit.INSSpringLoadingDestination",
				"AppKit.INSStackViewDelegate",
				"AppKit.INSStandardKeyBindingResponding",
				"AppKit.INSTableViewDataSource",
				"AppKit.INSTableViewDelegate",
				"AppKit.INSTabViewDelegate",
				"AppKit.INSTextAttachmentCellProtocol",
				"AppKit.INSTextAttachmentContainer",
				"AppKit.INSTextAttachmentLayout",
				"AppKit.INSTextCheckingClient",
				"AppKit.INSTextContent",
				"AppKit.INSTextContentManagerDelegate",
				"AppKit.INSTextContentStorageDelegate",
				"AppKit.INSTextDelegate",
				"AppKit.INSTextElementProvider",
				"AppKit.INSTextFieldDelegate",
				"AppKit.INSTextFinderBarContainer",
				"AppKit.INSTextFinderClient",
				"AppKit.INSTextInput",
				"AppKit.INSTextInputClient",
				"AppKit.INSTextInputTraits",
				"AppKit.INSTextLayoutManagerDelegate",
				"AppKit.INSTextLayoutOrientationProvider",
				"AppKit.INSTextLocation",
				"AppKit.INSTextSelectionDataSource",
				"AppKit.INSTextStorageDelegate",
				"AppKit.INSTextStorageObserving",
				"AppKit.INSTextViewDelegate",
				"AppKit.INSTextViewportLayoutControllerDelegate",
				"AppKit.INSTokenFieldCellDelegate",
				"AppKit.INSTokenFieldDelegate",
				"AppKit.INSToolbarDelegate",
				"AppKit.INSToolbarItemValidation",
				"AppKit.INSToolTipOwner",
				"AppKit.INSTouchBarDelegate",
				"AppKit.INSTouchBarProvider",
				"AppKit.INSUserActivityRestoring",
				"AppKit.INSUserInterfaceCompression",
				"AppKit.INSUserInterfaceItemIdentification",
				"AppKit.INSUserInterfaceItemSearching",
				"AppKit.INSUserInterfaceValidations",
				"AppKit.INSValidatedUserInterfaceItem",
				"AppKit.INSViewControllerPresentationAnimator",
				"AppKit.INSViewToolTipOwner",
				"AppKit.INSWindowDelegate",
				"AppKit.INSWindowRestoration",
				"ARKit.IARCoachingOverlayViewDelegate",
				"ARKit.IARSCNViewDelegate",
				"ARKit.IARSessionDelegate",
				"ARKit.IARSessionObserver",
				"ARKit.IARSessionProviding",
				"ARKit.IARSKViewDelegate",
				"ARKit.IARTrackable",
				"AudioUnit.IAUAudioUnitFactory",
				"AuthenticationServices.IASAccountAuthenticationModificationControllerDelegate",
				"AuthenticationServices.IASAccountAuthenticationModificationControllerPresentationContextProviding",
				"AuthenticationServices.IASAuthorizationControllerDelegate",
				"AuthenticationServices.IASAuthorizationControllerPresentationContextProviding",
				"AuthenticationServices.IASAuthorizationProviderExtensionAuthorizationRequestHandler",
				"AuthenticationServices.IASAuthorizationProviderExtensionRegistrationHandler",
				"AuthenticationServices.IASAuthorizationPublicKeyCredentialAssertion",
				"AuthenticationServices.IASAuthorizationPublicKeyCredentialAssertionRequest",
				"AuthenticationServices.IASAuthorizationPublicKeyCredentialDescriptor",
				"AuthenticationServices.IASAuthorizationPublicKeyCredentialRegistration",
				"AuthenticationServices.IASAuthorizationPublicKeyCredentialRegistrationRequest",
				"AuthenticationServices.IASAuthorizationWebBrowserExternallyAuthenticatableRequest",
				"AuthenticationServices.IASAuthorizationWebBrowserPlatformPublicKeyCredentialAssertionRequest",
				"AuthenticationServices.IASAuthorizationWebBrowserPlatformPublicKeyCredentialProvider",
				"AuthenticationServices.IASAuthorizationWebBrowserPlatformPublicKeyCredentialRegistrationRequest",
				"AuthenticationServices.IASCredentialIdentity",
				"AuthenticationServices.IASCredentialRequest",
				"AuthenticationServices.IASPublicKeyCredential",
				"AuthenticationServices.IASWebAuthenticationPresentationContextProviding",
				"AuthenticationServices.IASWebAuthenticationSessionRequestDelegate",
				"AuthenticationServices.IASWebAuthenticationSessionWebBrowserSessionHandling",
				"AutomaticAssessmentConfiguration.IAEAssessmentSessionDelegate",
				"AVFoundation.IAVAssetDownloadDelegate",
				"AVFoundation.IAVAssetReaderCaptionValidationHandling",
				"AVFoundation.IAVAssetResourceLoaderDelegate",
				"AVFoundation.IAVAssetWriterDelegate",
				"AVFoundation.IAVAsynchronousKeyValueLoading",
				"AVFoundation.IAVAudio3DMixing",
				"AVFoundation.IAVAudioMixing",
				"AVFoundation.IAVAudioPlayerDelegate",
				"AVFoundation.IAVAudioRecorderDelegate",
				"AVFoundation.IAVAudioSessionDelegate",
				"AVFoundation.IAVAudioStereoMixing",
				"AVFoundation.IAVCaptureAudioDataOutputSampleBufferDelegate",
				"AVFoundation.IAVCaptureDataOutputSynchronizerDelegate",
				"AVFoundation.IAVCaptureDepthDataOutputDelegate",
				"AVFoundation.IAVCaptureFileOutputDelegate",
				"AVFoundation.IAVCaptureFileOutputRecordingDelegate",
				"AVFoundation.IAVCaptureMetadataOutputObjectsDelegate",
				"AVFoundation.IAVCapturePhotoCaptureDelegate",
				"AVFoundation.IAVCapturePhotoFileDataRepresentationCustomizer",
				"AVFoundation.IAVCaptureVideoDataOutputSampleBufferDelegate",
				"AVFoundation.IAVContentKeyRecipient",
				"AVFoundation.IAVContentKeySessionDelegate",
				"AVFoundation.IAVFragmentMinding",
				"AVFoundation.IAVPlaybackCoordinatorPlaybackControlDelegate",
				"AVFoundation.IAVPlayerItemLegibleOutputPushDelegate",
				"AVFoundation.IAVPlayerItemMetadataCollectorPushDelegate",
				"AVFoundation.IAVPlayerItemMetadataOutputPushDelegate",
				"AVFoundation.IAVPlayerItemOutputPullDelegate",
				"AVFoundation.IAVPlayerItemOutputPushDelegate",
				"AVFoundation.IAVPlayerPlaybackCoordinatorDelegate",
				"AVFoundation.IAVQueuedSampleBufferRendering",
				"AVFoundation.IAVSpeechSynthesizerDelegate",
				"AVFoundation.IAVVideoCompositing",
				"AVFoundation.IAVVideoCompositionValidationHandling",
				"AVKit.IAVCaptureViewDelegate",
				"AVKit.IAVCustomRoutingControllerDelegate",
				"AVKit.IAVPictureInPictureControllerDelegate",
				"AVKit.IAVPictureInPictureSampleBufferPlaybackDelegate",
				"AVKit.IAVPlayerViewControllerAnimationCoordinator",
				"AVKit.IAVPlayerViewControllerDelegate",
				"AVKit.IAVPlayerViewDelegate",
				"AVKit.IAVPlayerViewPictureInPictureDelegate",
				"AVKit.IAVRoutePickerViewDelegate",
				"BackgroundAssets.IBADownloaderExtension",
				"BackgroundAssets.IBADownloadManagerDelegate",
				"CallKit.ICXCallDirectoryExtensionContextDelegate",
				"CallKit.ICXCallObserverDelegate",
				"CallKit.ICXProviderDelegate",
				"CarPlay.ICPApplicationDelegate",
				"CarPlay.ICPBarButtonProviding",
				"CarPlay.ICPInstrumentClusterControllerDelegate",
				"CarPlay.ICPInterfaceControllerDelegate",
				"CarPlay.ICPListTemplateDelegate",
				"CarPlay.ICPListTemplateItem",
				"CarPlay.ICPMapTemplateDelegate",
				"CarPlay.ICPNowPlayingTemplateObserver",
				"CarPlay.ICPPointOfInterestTemplateDelegate",
				"CarPlay.ICPSearchTemplateDelegate",
				"CarPlay.ICPSelectableListItem",
				"CarPlay.ICPSessionConfigurationDelegate",
				"CarPlay.ICPTabBarTemplateDelegate",
				"CarPlay.ICPTemplateApplicationDashboardSceneDelegate",
				"CarPlay.ICPTemplateApplicationInstrumentClusterSceneDelegate",
				"CarPlay.ICPTemplateApplicationSceneDelegate",
				"ClassKit.ICLSContextProvider",
				"ClassKit.ICLSDataStoreDelegate",
				"CloudKit.ICKSyncEngineDelegate",
				"Contacts.ICNChangeHistoryEventVisitor",
				"ContactsUI.ICNContactPickerDelegate",
				"ContactsUI.ICNContactViewControllerDelegate",
				"CoreAnimation.ICAAction",
				"CoreAnimation.ICAAnimationDelegate",
				"CoreAnimation.ICALayerDelegate",
				"CoreAnimation.ICAMediaTiming",
				"CoreAnimation.ICAMetalDrawable",
				"CoreAudioKit.IAUCustomViewPersistentData",
				"CoreBluetooth.ICBCentralManagerDelegate",
				"CoreBluetooth.ICBPeripheralDelegate",
				"CoreBluetooth.ICBPeripheralManagerDelegate",
				"CoreData.INSFetchedResultsControllerDelegate",
				"CoreData.INSFetchedResultsSectionInfo",
				"CoreHaptics.ICHHapticAdvancedPatternPlayer",
				"CoreHaptics.ICHHapticDeviceCapability",
				"CoreHaptics.ICHHapticParameterAttributes",
				"CoreHaptics.ICHHapticPatternPlayer",
				"CoreImage.ICIAccordionFoldTransitionProtocol",
				"CoreImage.ICIAffineClampProtocol",
				"CoreImage.ICIAffineTileProtocol",
				"CoreImage.ICIAreaHistogramProtocol",
				"CoreImage.ICIAreaLogarithmicHistogramProtocol",
				"CoreImage.ICIAreaReductionFilterProtocol",
				"CoreImage.ICIAttributedTextImageGeneratorProtocol",
				"CoreImage.ICIAztecCodeGeneratorProtocol",
				"CoreImage.ICIBarcodeGeneratorProtocol",
				"CoreImage.ICIBarsSwipeTransitionProtocol",
				"CoreImage.ICIBicubicScaleTransformProtocol",
				"CoreImage.ICIBlendWithMaskProtocol",
				"CoreImage.ICIBloomProtocol",
				"CoreImage.ICIBlurredRectangleGeneratorProtocol",
				"CoreImage.ICIBokehBlurProtocol",
				"CoreImage.ICIBoxBlurProtocol",
				"CoreImage.ICIBumpDistortionLinearProtocol",
				"CoreImage.ICIBumpDistortionProtocol",
				"CoreImage.ICICannyEdgeDetectorProtocol",
				"CoreImage.ICICheckerboardGeneratorProtocol",
				"CoreImage.ICICircleSplashDistortionProtocol",
				"CoreImage.ICICircularScreenProtocol",
				"CoreImage.ICICircularWrapProtocol",
				"CoreImage.ICICmykHalftoneProtocol",
				"CoreImage.ICICode128BarcodeGeneratorProtocol",
				"CoreImage.ICIColorAbsoluteDifferenceProtocol",
				"CoreImage.ICIColorClampProtocol",
				"CoreImage.ICIColorControlsProtocol",
				"CoreImage.ICIColorCrossPolynomialProtocol",
				"CoreImage.ICIColorCubeProtocol",
				"CoreImage.ICIColorCubesMixedWithMaskProtocol",
				"CoreImage.ICIColorCubeWithColorSpaceProtocol",
				"CoreImage.ICIColorCurvesProtocol",
				"CoreImage.ICIColorInvertProtocol",
				"CoreImage.ICIColorMapProtocol",
				"CoreImage.ICIColorMatrixProtocol",
				"CoreImage.ICIColorMonochromeProtocol",
				"CoreImage.ICIColorPolynomialProtocol",
				"CoreImage.ICIColorPosterizeProtocol",
				"CoreImage.ICIColorThresholdOtsuProtocol",
				"CoreImage.ICIColorThresholdProtocol",
				"CoreImage.ICIComicEffectProtocol",
				"CoreImage.ICICompositeOperationProtocol",
				"CoreImage.ICIConvertLabProtocol",
				"CoreImage.ICIConvolutionProtocol",
				"CoreImage.ICICopyMachineTransitionProtocol",
				"CoreImage.ICICoreMLModelProtocol",
				"CoreImage.ICICrystallizeProtocol",
				"CoreImage.ICIDepthOfFieldProtocol",
				"CoreImage.ICIDepthToDisparityProtocol",
				"CoreImage.ICIDiscBlurProtocol",
				"CoreImage.ICIDisintegrateWithMaskTransitionProtocol",
				"CoreImage.ICIDisparityToDepthProtocol",
				"CoreImage.ICIDisplacementDistortionProtocol",
				"CoreImage.ICIDitherProtocol",
				"CoreImage.ICIDocumentEnhancerProtocol",
				"CoreImage.ICIDotScreenProtocol",
				"CoreImage.ICIDrosteProtocol",
				"CoreImage.ICIEdgePreserveUpsampleProtocol",
				"CoreImage.ICIEdgesProtocol",
				"CoreImage.ICIEdgeWorkProtocol",
				"CoreImage.ICIEightfoldReflectedTileProtocol",
				"CoreImage.ICIExposureAdjustProtocol",
				"CoreImage.ICIFalseColorProtocol",
				"CoreImage.ICIFilterConstructor",
				"CoreImage.ICIFilterProtocol",
				"CoreImage.ICIFlashTransitionProtocol",
				"CoreImage.ICIFourCoordinateGeometryFilterProtocol",
				"CoreImage.ICIFourfoldReflectedTileProtocol",
				"CoreImage.ICIFourfoldRotatedTileProtocol",
				"CoreImage.ICIFourfoldTranslatedTileProtocol",
				"CoreImage.ICIGaborGradientsProtocol",
				"CoreImage.ICIGammaAdjustProtocol",
				"CoreImage.ICIGaussianBlurProtocol",
				"CoreImage.ICIGaussianGradientProtocol",
				"CoreImage.ICIGlassDistortionProtocol",
				"CoreImage.ICIGlassLozengeProtocol",
				"CoreImage.ICIGlideReflectedTileProtocol",
				"CoreImage.ICIGloomProtocol",
				"CoreImage.ICIHatchedScreenProtocol",
				"CoreImage.ICIHeightFieldFromMaskProtocol",
				"CoreImage.ICIHexagonalPixellateProtocol",
				"CoreImage.ICIHighlightShadowAdjustProtocol",
				"CoreImage.ICIHistogramDisplayProtocol",
				"CoreImage.ICIHoleDistortionProtocol",
				"CoreImage.ICIHueAdjustProtocol",
				"CoreImage.ICIHueSaturationValueGradientProtocol",
				"CoreImage.ICIImageProcessorInput",
				"CoreImage.ICIImageProcessorOutput",
				"CoreImage.ICIImageProvider",
				"CoreImage.ICIKaleidoscopeProtocol",
				"CoreImage.ICIKeystoneCorrectionCombinedProtocol",
				"CoreImage.ICIKeystoneCorrectionHorizontalProtocol",
				"CoreImage.ICIKeystoneCorrectionVerticalProtocol",
				"CoreImage.ICIKMeansProtocol",
				"CoreImage.ICILabDeltaEProtocol",
				"CoreImage.ICILanczosScaleTransformProtocol",
				"CoreImage.ICILenticularHaloGeneratorProtocol",
				"CoreImage.ICILightTunnelProtocol",
				"CoreImage.ICILinearGradientProtocol",
				"CoreImage.ICILinearToSrgbToneCurveProtocol",
				"CoreImage.ICILineOverlayProtocol",
				"CoreImage.ICILineScreenProtocol",
				"CoreImage.ICIMaskedVariableBlurProtocol",
				"CoreImage.ICIMaskToAlphaProtocol",
				"CoreImage.ICIMaximumComponentProtocol",
				"CoreImage.ICIMedianProtocol",
				"CoreImage.ICIMeshGeneratorProtocol",
				"CoreImage.ICIMinimumComponentProtocol",
				"CoreImage.ICIMixProtocol",
				"CoreImage.ICIModTransitionProtocol",
				"CoreImage.ICIMorphologyGradientProtocol",
				"CoreImage.ICIMorphologyMaximumProtocol",
				"CoreImage.ICIMorphologyMinimumProtocol",
				"CoreImage.ICIMorphologyRectangleMaximumProtocol",
				"CoreImage.ICIMorphologyRectangleMinimumProtocol",
				"CoreImage.ICIMotionBlurProtocol",
				"CoreImage.ICINinePartStretchedProtocol",
				"CoreImage.ICINinePartTiledProtocol",
				"CoreImage.ICINoiseReductionProtocol",
				"CoreImage.ICIOpTileProtocol",
				"CoreImage.ICIPageCurlTransitionProtocol",
				"CoreImage.ICIPageCurlWithShadowTransitionProtocol",
				"CoreImage.ICIPaletteCentroidProtocol",
				"CoreImage.ICIPalettizeProtocol",
				"CoreImage.ICIParallelogramTileProtocol",
				"CoreImage.ICIPdf417BarcodeGeneratorProtocol",
				"CoreImage.ICIPersonSegmentationProtocol",
				"CoreImage.ICIPerspectiveCorrectionProtocol",
				"CoreImage.ICIPerspectiveRotateProtocol",
				"CoreImage.ICIPerspectiveTileProtocol",
				"CoreImage.ICIPerspectiveTransformWithExtentProtocol",
				"CoreImage.ICIPhotoEffectProtocol",
				"CoreImage.ICIPinchDistortionProtocol",
				"CoreImage.ICIPixellateProtocol",
				"CoreImage.ICIPointillizeProtocol",
				"CoreImage.ICIQRCodeGeneratorProtocol",
				"CoreImage.ICIRadialGradientProtocol",
				"CoreImage.ICIRippleTransitionProtocol",
				"CoreImage.ICIRoundedRectangleGeneratorProtocol",
				"CoreImage.ICIRoundedRectangleStrokeGeneratorProtocol",
				"CoreImage.ICISaliencyMapProtocol",
				"CoreImage.ICISepiaToneProtocol",
				"CoreImage.ICIShadedMaterialProtocol",
				"CoreImage.ICISharpenLuminanceProtocol",
				"CoreImage.ICISixfoldReflectedTileProtocol",
				"CoreImage.ICISixfoldRotatedTileProtocol",
				"CoreImage.ICISmoothLinearGradientProtocol",
				"CoreImage.ICISobelGradientsProtocol",
				"CoreImage.ICISpotColorProtocol",
				"CoreImage.ICISpotLightProtocol",
				"CoreImage.ICISrgbToneCurveToLinearProtocol",
				"CoreImage.ICIStarShineGeneratorProtocol",
				"CoreImage.ICIStraightenProtocol",
				"CoreImage.ICIStretchCropProtocol",
				"CoreImage.ICIStripesGeneratorProtocol",
				"CoreImage.ICISunbeamsGeneratorProtocol",
				"CoreImage.ICISwipeTransitionProtocol",
				"CoreImage.ICITemperatureAndTintProtocol",
				"CoreImage.ICITextImageGeneratorProtocol",
				"CoreImage.ICIThermalProtocol",
				"CoreImage.ICIToneCurveProtocol",
				"CoreImage.ICITorusLensDistortionProtocol",
				"CoreImage.ICITransitionFilterProtocol",
				"CoreImage.ICITriangleKaleidoscopeProtocol",
				"CoreImage.ICITriangleTileProtocol",
				"CoreImage.ICITwelvefoldReflectedTileProtocol",
				"CoreImage.ICITwirlDistortionProtocol",
				"CoreImage.ICIUnsharpMaskProtocol",
				"CoreImage.ICIVibranceProtocol",
				"CoreImage.ICIVignetteEffectProtocol",
				"CoreImage.ICIVignetteProtocol",
				"CoreImage.ICIVortexDistortionProtocol",
				"CoreImage.ICIWhitePointAdjustProtocol",
				"CoreImage.ICIXRayProtocol",
				"CoreImage.ICIZoomBlurProtocol",
				"CoreLocation.ICLLocationManagerDelegate",
				"CoreLocation.ICLLocationPushServiceExtension",
				"CoreMidi.IMidiCIProfileResponderDelegate",
				"CoreML.IMLBatchProvider",
				"CoreML.IMLCustomLayer",
				"CoreML.IMLCustomModel",
				"CoreML.IMLFeatureProvider",
				"CoreML.IMLWritable",
				"CoreMotion.ICMHeadphoneMotionManagerDelegate",
				"CoreMotion.ICMWaterSubmersionManagerDelegate",
				"CoreNFC.INFCFeliCaTag",
				"CoreNFC.INFCIso15693Tag",
				"CoreNFC.INFCIso7816Tag",
				"CoreNFC.INFCMiFareTag",
				"CoreNFC.INFCNdefReaderSessionDelegate",
				"CoreNFC.INFCNdefTag",
				"CoreNFC.INFCReaderSessionContract",
				"CoreNFC.INFCReaderSessionDelegate",
				"CoreNFC.INFCTag",
				"CoreNFC.INFCTagReaderSessionDelegate",
				"CoreNFC.INFCVasReaderSessionDelegate",
				"CoreSpotlight.ICSSearchableIndexDelegate",
				"CoreTelephony.ICTSubscriberDelegate",
				"CoreTelephony.ICTTelephonyNetworkInfoDelegate",
				"CoreWlan.ICWEventDelegate",
				"CryptoTokenKit.ITKSmartCardTokenDriverDelegate",
				"CryptoTokenKit.ITKSmartCardUserInteractionDelegate",
				"CryptoTokenKit.ITKTokenDelegate",
				"CryptoTokenKit.ITKTokenDriverDelegate",
				"CryptoTokenKit.ITKTokenSessionDelegate",
				"EventKitUI.IEKCalendarChooserDelegate",
				"EventKitUI.IEKEventEditViewDelegate",
				"EventKitUI.IEKEventViewDelegate",
				"ExtensionKit.IEXHostViewControllerDelegate",
				"ExternalAccessory.IEAAccessoryDelegate",
				"ExternalAccessory.IEAWiFiUnconfiguredAccessoryBrowserDelegate",
				"FileProvider.INSFileProviderChangeObserver",
				"FileProvider.INSFileProviderCustomAction",
				"FileProvider.INSFileProviderDomainState",
				"FileProvider.INSFileProviderEnumerating",
				"FileProvider.INSFileProviderEnumerationObserver",
				"FileProvider.INSFileProviderEnumerator",
				"FileProvider.INSFileProviderIncrementalContentFetching",
				"FileProvider.INSFileProviderItem",
				"FileProvider.INSFileProviderPartialContentFetching",
				"FileProvider.INSFileProviderPendingSetEnumerator",
				"FileProvider.INSFileProviderReplicatedExtension",
				"FileProvider.INSFileProviderServiceSource",
				"FileProvider.INSFileProviderServicing",
				"FileProvider.INSFileProviderTestingChildrenEnumeration",
				"FileProvider.INSFileProviderTestingCollisionResolution",
				"FileProvider.INSFileProviderTestingContentFetch",
				"FileProvider.INSFileProviderTestingCreation",
				"FileProvider.INSFileProviderTestingDeletion",
				"FileProvider.INSFileProviderTestingIngestion",
				"FileProvider.INSFileProviderTestingLookup",
				"FileProvider.INSFileProviderTestingModification",
				"FileProvider.INSFileProviderTestingOperation",
				"FileProvider.INSFileProviderThumbnailing",
				"FileProvider.INSFileProviderUserInteractionSuppressing",
				"FinderSync.IFIFinderSyncProtocol",
				"Foundation.INSCacheDelegate",
				"Foundation.INSCoding",
				"Foundation.INSConnectionDelegate",
				"Foundation.INSCopying",
				"Foundation.INSDiscardableContent",
				"Foundation.INSExtensionRequestHandling",
				"Foundation.INSFileManagerDelegate",
				"Foundation.INSFilePresenter",
				"Foundation.INSItemProviderReading",
				"Foundation.INSItemProviderWriting",
				"Foundation.INSKeyedArchiverDelegate",
				"Foundation.INSKeyedUnarchiverDelegate",
				"Foundation.INSLocking",
				"Foundation.INSMachPortDelegate",
				"Foundation.INSMetadataQueryDelegate",
				"Foundation.INSMutableCopying",
				"Foundation.INSNetServiceBrowserDelegate",
				"Foundation.INSNetServiceDelegate",
				"Foundation.INSObjectProtocol",
				"Foundation.INSPortDelegate",
				"Foundation.INSProgressReporting",
				"Foundation.INSStreamDelegate",
				"Foundation.INSUrlAuthenticationChallengeSender",
				"Foundation.INSUrlConnectionDataDelegate",
				"Foundation.INSUrlConnectionDelegate",
				"Foundation.INSUrlConnectionDownloadDelegate",
				"Foundation.INSUrlDownloadDelegate",
				"Foundation.INSUrlProtocolClient",
				"Foundation.INSUrlSessionDataDelegate",
				"Foundation.INSUrlSessionDelegate",
				"Foundation.INSUrlSessionDownloadDelegate",
				"Foundation.INSUrlSessionStreamDelegate",
				"Foundation.INSUrlSessionTaskDelegate",
				"Foundation.INSUrlSessionWebSocketDelegate",
				"Foundation.INSUserActivityDelegate",
				"Foundation.INSUserNotificationCenterDelegate",
				"Foundation.INSXpcListenerDelegate",
				"GameController.IGCAxisElement",
				"GameController.IGCAxisInput",
				"GameController.IGCButtonElement",
				"GameController.IGCDevice",
				"GameController.IGCDevicePhysicalInput",
				"GameController.IGCDevicePhysicalInputState",
				"GameController.IGCDevicePhysicalInputStateDiff",
				"GameController.IGCDirectionPadElement",
				"GameController.IGCLinearInput",
				"GameController.IGCPhysicalInputElement",
				"GameController.IGCPressedStateInput",
				"GameController.IGCRelativeInput",
				"GameController.IGCSwitchElement",
				"GameController.IGCSwitchPositionInput",
				"GameController.IGCTouchedStateInput",
				"GameKit.IGKAchievementViewControllerDelegate",
				"GameKit.IGKChallengeEventHandlerDelegate",
				"GameKit.IGKChallengeListener",
				"GameKit.IGKChallengesViewControllerDelegate",
				"GameKit.IGKFriendRequestComposeViewControllerDelegate",
				"GameKit.IGKGameCenterControllerDelegate",
				"GameKit.IGKGameSessionEventListener",
				"GameKit.IGKGameSessionSharingViewControllerDelegate",
				"GameKit.IGKInviteEventListener",
				"GameKit.IGKLeaderboardViewControllerDelegate",
				"GameKit.IGKMatchDelegate",
				"GameKit.IGKMatchmakerViewControllerDelegate",
				"GameKit.IGKSavedGameListener",
				"GameKit.IGKSessionDelegate",
				"GameKit.IGKTurnBasedEventHandlerDelegate",
				"GameKit.IGKTurnBasedEventListener",
				"GameKit.IGKTurnBasedMatchmakerViewControllerDelegate",
				"GameKit.IGKVoiceChatClient",
				"GameplayKit.IGKAgentDelegate",
				"GameplayKit.IGKGameModel",
				"GameplayKit.IGKGameModelPlayer",
				"GameplayKit.IGKGameModelUpdate",
				"GameplayKit.IGKRandom",
				"GameplayKit.IGKStrategist",
				"GLKit.IGLKNamedEffect",
				"GLKit.IGLKViewControllerDelegate",
				"GLKit.IGLKViewDelegate",
				"HealthKit.IHKLiveWorkoutBuilderDelegate",
				"HealthKit.IHKWorkoutSessionDelegate",
				"HomeKit.IHMAccessoryBrowserDelegate",
				"HomeKit.IHMAccessoryDelegate",
				"HomeKit.IHMCameraSnapshotControlDelegate",
				"HomeKit.IHMCameraStreamControlDelegate",
				"HomeKit.IHMHomeDelegate",
				"HomeKit.IHMHomeManagerDelegate",
				"HomeKit.IHMNetworkConfigurationProfileDelegate",
				"IdentityLookup.IILMessageFilterCapabilitiesQueryHandling",
				"IdentityLookup.IILMessageFilterQueryHandling",
				"ImageCaptureCore.IICCameraDeviceDelegate",
				"ImageCaptureCore.IICCameraDeviceDownloadDelegate",
				"ImageCaptureCore.IICDeviceBrowserDelegate",
				"ImageCaptureCore.IICDeviceDelegate",
				"ImageCaptureCore.IICScannerDeviceDelegate",
				"ImageKit.IIKCameraDeviceViewDelegate",
				"ImageKit.IIKDeviceBrowserViewDelegate",
				"ImageKit.IIKFilterCustomUIProvider",
				"ImageKit.IIKImageBrowserDataSource",
				"ImageKit.IIKImageBrowserDelegate",
				"ImageKit.IIKImageBrowserItem",
				"ImageKit.IIKImageEditPanelDataSource",
				"ImageKit.IIKSaveOptionsDelegate",
				"ImageKit.IIKScannerDeviceViewDelegate",
				"ImageKit.IIKSlideshowDataSource",
				"Intents.IINActivateCarSignalIntentHandling",
				"Intents.IINAddMediaIntentHandling",
				"Intents.IINAddTasksIntentHandling",
				"Intents.IINAnswerCallIntentHandling",
				"Intents.IINAppendToNoteIntentHandling",
				"Intents.IINBookRestaurantReservationIntentHandling",
				"Intents.IINCancelRideIntentHandling",
				"Intents.IINCancelWorkoutIntentHandling",
				"Intents.IINCreateNoteIntentHandling",
				"Intents.IINCreateTaskListIntentHandling",
				"Intents.IINDeleteTasksIntentHandling",
				"Intents.IINEditMessageIntentHandling",
				"Intents.IINEndWorkoutIntentHandling",
				"Intents.IINGetAvailableRestaurantReservationBookingDefaultsIntentHandling",
				"Intents.IINGetAvailableRestaurantReservationBookingsIntentHandling",
				"Intents.IINGetCarLockStatusIntentHandling",
				"Intents.IINGetCarPowerLevelStatusIntentHandling",
				"Intents.IINGetCarPowerLevelStatusIntentResponseObserver",
				"Intents.IINGetRestaurantGuestIntentHandling",
				"Intents.IINGetRideStatusIntentHandling",
				"Intents.IINGetRideStatusIntentResponseObserver",
				"Intents.IINGetUserCurrentRestaurantReservationBookingsIntentHandling",
				"Intents.IINGetVisualCodeIntentHandling",
				"Intents.IINHangUpCallIntentHandling",
				"Intents.IINIntentHandlerProviding",
				"Intents.IINListCarsIntentHandling",
				"Intents.IINListRideOptionsIntentHandling",
				"Intents.IINPauseWorkoutIntentHandling",
				"Intents.IINPayBillIntentHandling",
				"Intents.IINPlayMediaIntentHandling",
				"Intents.IINRequestPaymentIntentHandling",
				"Intents.IINRequestRideIntentHandling",
				"Intents.IINResumeWorkoutIntentHandling",
				"Intents.IINSaveProfileInCarIntentHandling",
				"Intents.IINSearchCallHistoryIntentHandling",
				"Intents.IINSearchForAccountsIntentHandling",
				"Intents.IINSearchForBillsIntentHandling",
				"Intents.IINSearchForMediaIntentHandling",
				"Intents.IINSearchForMessagesIntentHandling",
				"Intents.IINSearchForNotebookItemsIntentHandling",
				"Intents.IINSearchForPhotosIntentHandling",
				"Intents.IINSendMessageIntentHandling",
				"Intents.IINSendPaymentIntentHandling",
				"Intents.IINSendRideFeedbackIntentHandling",
				"Intents.IINSetAudioSourceInCarIntentHandling",
				"Intents.IINSetCarLockStatusIntentHandling",
				"Intents.IINSetClimateSettingsInCarIntentHandling",
				"Intents.IINSetDefrosterSettingsInCarIntentHandling",
				"Intents.IINSetMessageAttributeIntentHandling",
				"Intents.IINSetProfileInCarIntentHandling",
				"Intents.IINSetRadioStationIntentHandling",
				"Intents.IINSetSeatSettingsInCarIntentHandling",
				"Intents.IINSetTaskAttributeIntentHandling",
				"Intents.IINShareFocusStatusIntentHandling",
				"Intents.IINSnoozeTasksIntentHandling",
				"Intents.IINSpeakable",
				"Intents.IINStartAudioCallIntentHandling",
				"Intents.IINStartCallIntentHandling",
				"Intents.IINStartPhotoPlaybackIntentHandling",
				"Intents.IINStartVideoCallIntentHandling",
				"Intents.IINStartWorkoutIntentHandling",
				"Intents.IINTransferMoneyIntentHandling",
				"Intents.IINUnsendMessagesIntentHandling",
				"Intents.IINUpdateMediaAffinityIntentHandling",
				"IntentsUI.IINUIAddVoiceShortcutButtonDelegate",
				"IntentsUI.IINUIAddVoiceShortcutViewControllerDelegate",
				"IntentsUI.IINUIEditVoiceShortcutViewControllerDelegate",
				"IntentsUI.IINUIHostedViewControlling",
				"IntentsUI.IINUIHostedViewSiriProviding",
				"MailKit.IMEComposeSessionHandler",
				"MailKit.IMEContentBlocker",
				"MailKit.IMEExtension",
				"MailKit.IMEMessageActionHandler",
				"MailKit.IMEMessageDecoder",
				"MailKit.IMEMessageEncoder",
				"MailKit.IMEMessageSecurityHandler",
				"MapKit.IMKAnnotation",
				"MapKit.IMKLocalSearchCompleterDelegate",
				"MapKit.IMKLookAroundViewControllerDelegate",
				"MapKit.IMKMapViewDelegate",
				"MapKit.IMKOverlay",
				"MapKit.IMKReverseGeocoderDelegate",
				"MediaPlayer.IMPMediaPickerControllerDelegate",
				"MediaPlayer.IMPMediaPlayback",
				"MediaPlayer.IMPNowPlayingSessionDelegate",
				"MediaPlayer.IMPPlayableContentDataSource",
				"MediaPlayer.IMPPlayableContentDelegate",
				"MediaPlayer.IMPSystemMusicPlayerController",
				"MediaSetup.IMSAuthenticationPresentationContext",
				"Messages.IMSMessagesAppTranscriptPresentation",
				"Messages.IMSStickerBrowserViewDataSource",
				"MessageUI.IMFMailComposeViewControllerDelegate",
				"MessageUI.IMFMessageComposeViewControllerDelegate",
				"Metal.IMTLAccelerationStructure",
				"Metal.IMTLAccelerationStructureCommandEncoder",
				"Metal.IMTLArgumentEncoder",
				"Metal.IMTLBinaryArchive",
				"Metal.IMTLBinding",
				"Metal.IMTLBlitCommandEncoder",
				"Metal.IMTLBuffer",
				"Metal.IMTLBufferBinding",
				"Metal.IMTLCaptureScope",
				"Metal.IMTLCommandBuffer",
				"Metal.IMTLCommandBufferEncoderInfo",
				"Metal.IMTLCommandEncoder",
				"Metal.IMTLCommandQueue",
				"Metal.IMTLComputeCommandEncoder",
				"Metal.IMTLComputePipelineState",
				"Metal.IMTLCounter",
				"Metal.IMTLCounterSampleBuffer",
				"Metal.IMTLCounterSet",
				"Metal.IMTLDepthStencilState",
				"Metal.IMTLDevice",
				"Metal.IMTLDrawable",
				"Metal.IMTLDynamicLibrary",
				"Metal.IMTLEvent",
				"Metal.IMTLFence",
				"Metal.IMTLFunction",
				"Metal.IMTLFunctionHandle",
				"Metal.IMTLFunctionLog",
				"Metal.IMTLFunctionLogDebugLocation",
				"Metal.IMTLHeap",
				"Metal.IMTLIndirectCommandBuffer",
				"Metal.IMTLIndirectComputeCommand",
				"Metal.IMTLIndirectRenderCommand",
				"Metal.IMTLIntersectionFunctionTable",
				"Metal.IMTLLibrary",
				"Metal.IMTLObjectPayloadBinding",
				"Metal.IMTLParallelRenderCommandEncoder",
				"Metal.IMTLRasterizationRateMap",
				"Metal.IMTLRenderCommandEncoder",
				"Metal.IMTLRenderPipelineState",
				"Metal.IMTLResource",
				"Metal.IMTLResourceStateCommandEncoder",
				"Metal.IMTLSamplerState",
				"Metal.IMTLSharedEvent",
				"Metal.IMTLTexture",
				"Metal.IMTLTextureBinding",
				"Metal.IMTLThreadgroupBinding",
				"Metal.IMTLVisibleFunctionTable",
				"MetalFX.IMTLFXSpatialScaler",
				"MetalFX.IMTLFXTemporalScaler",
				"MetalKit.IMTKViewDelegate",
				"MetalPerformanceShaders.IMPSCnnBatchNormalizationDataSource",
				"MetalPerformanceShaders.IMPSCnnConvolutionDataSource",
				"MetalPerformanceShaders.IMPSCnnInstanceNormalizationDataSource",
				"MetalPerformanceShaders.IMPSDeviceProvider",
				"MetalPerformanceShaders.IMPSHandle",
				"MetalPerformanceShaders.IMPSHeapProvider",
				"MetalPerformanceShaders.IMPSImageAllocator",
				"MetalPerformanceShaders.IMPSImageSizeEncodingState",
				"MetalPerformanceShaders.IMPSImageTransformProvider",
				"MetalPerformanceShaders.IMPSNDArrayAllocator",
				"MetalPerformanceShaders.IMPSNNLossCallback",
				"MetalPerformanceShaders.IMPSNNPadding",
				"MetalPerformanceShaders.IMPSNNTrainableNode",
				"MetricKit.IMXMetricManagerSubscriber",
				"ModelIO.IMDLAssetResolver",
				"ModelIO.IMDLLightProbeIrradianceDataSource",
				"ModelIO.IMDLMeshBuffer",
				"ModelIO.IMDLMeshBufferAllocator",
				"ModelIO.IMDLMeshBufferZone",
				"ModelIO.IMDLNamed",
				"ModelIO.IMDLObjectContainerComponent",
				"ModelIO.IMDLTransformComponent",
				"ModelIO.IMDLTransformOp",
				"MultipeerConnectivity.IMCAdvertiserAssistantDelegate",
				"MultipeerConnectivity.IMCBrowserViewControllerDelegate",
				"MultipeerConnectivity.IMCNearbyServiceAdvertiserDelegate",
				"MultipeerConnectivity.IMCNearbyServiceBrowserDelegate",
				"MultipeerConnectivity.IMCSessionDelegate",
				"NearbyInteraction.INIDeviceCapability",
				"NearbyInteraction.INISessionDelegate",
				"NetworkExtension.INEAppPushDelegate",
				"NetworkExtension.INWTcpConnectionAuthenticationDelegate",
				"NotificationCenter.INCWidgetListViewDelegate",
				"NotificationCenter.INCWidgetProviding",
				"NotificationCenter.INCWidgetSearchViewDelegate",
				"OpenGLES.IEAGLDrawable",
				"OSLog.IOSLogEntryFromProcess",
				"OSLog.IOSLogEntryWithPayload",
				"PassKit.IPKAddPassesViewControllerDelegate",
				"PassKit.IPKAddPaymentPassViewControllerDelegate",
				"PassKit.IPKAddSecureElementPassViewControllerDelegate",
				"PassKit.IPKIdentityDocumentDescriptor",
				"PassKit.IPKIssuerProvisioningExtensionAuthorizationProviding",
				"PassKit.IPKPayLaterViewDelegate",
				"PassKit.IPKPaymentAuthorizationControllerDelegate",
				"PassKit.IPKPaymentAuthorizationViewControllerDelegate",
				"PassKit.IPKPaymentInformationRequestHandling",
				"PassKit.IPKShareSecureElementPassViewControllerDelegate",
				"PassKit.IPKVehicleConnectionDelegate",
				"PdfKit.IPdfDocumentDelegate",
				"PdfKit.IPdfPageOverlayViewProvider",
				"PdfKit.IPdfViewDelegate",
				"PencilKit.IPKCanvasViewDelegate",
				"PencilKit.IPKToolPickerObserver",
				"Photos.IPHLivePhotoFrame",
				"Photos.IPHPhotoLibraryAvailabilityObserver",
				"Photos.IPHPhotoLibraryChangeObserver",
				"PhotosUI.IPHContentEditingController",
				"PhotosUI.IPHLivePhotoViewDelegate",
				"PhotosUI.IPHPickerViewControllerDelegate",
				"PhotosUI.IPHProjectExtensionController",
				"PhotosUI.IPHProjectTypeDescriptionDataSource",
				"PhotosUI.IPHProjectTypeDescriptionInvalidator",
				"PushKit.IPKPushRegistryDelegate",
				"PushToTalk.IPTChannelManagerDelegate",
				"PushToTalk.IPTChannelRestorationDelegate",
				"QuickLook.IQLPreviewControllerDataSource",
				"QuickLook.IQLPreviewControllerDelegate",
				"QuickLook.IQLPreviewingController",
				"QuickLook.IQLPreviewItem",
				"QuickLookUI.IQLPreviewingController",
				"QuickLookUI.IQLPreviewItem",
				"QuickLookUI.IQLPreviewPanelDataSource",
				"QuickLookUI.IQLPreviewPanelDelegate",
				"ReplayKit.IRPBroadcastActivityControllerDelegate",
				"ReplayKit.IRPBroadcastActivityViewControllerDelegate",
				"ReplayKit.IRPBroadcastControllerDelegate",
				"ReplayKit.IRPPreviewViewControllerDelegate",
				"ReplayKit.IRPScreenRecorderDelegate",
				"SafariServices.ISFSafariExtensionHandling",
				"SafariServices.ISFSafariViewControllerDelegate",
				"SafetyKit.ISACrashDetectionDelegate",
				"SafetyKit.ISAEmergencyResponseDelegate",
				"SceneKit.ISCNActionable",
				"SceneKit.ISCNAnimatable",
				"SceneKit.ISCNAvoidOccluderConstraintDelegate",
				"SceneKit.ISCNBoundingVolume",
				"SceneKit.ISCNBufferStream",
				"SceneKit.ISCNCameraControlConfiguration",
				"SceneKit.ISCNCameraControllerDelegate",
				"SceneKit.ISCNNodeRendererDelegate",
				"SceneKit.ISCNPhysicsContactDelegate",
				"SceneKit.ISCNProgramDelegate",
				"SceneKit.ISCNSceneExportDelegate",
				"SceneKit.ISCNSceneRenderer",
				"SceneKit.ISCNSceneRendererDelegate",
				"SceneKit.ISCNShadable",
				"SceneKit.ISCNTechniqueSupport",
				"ScreenCaptureKit.ISCContentSharingPickerObserver",
				"ScreenCaptureKit.ISCStreamDelegate",
				"ScreenCaptureKit.ISCStreamOutput",
				"ScriptingBridge.ISBApplicationDelegate",
				"SensorKit.ISRSensorReaderDelegate",
				"SharedWithYou.ISWCollaborationViewDelegate",
				"SharedWithYou.ISWHighlightCenterDelegate",
				"SharedWithYou.ISWHighlightEvent",
				"SharedWithYouCore.ISWCollaborationActionHandler",
				"ShazamKit.ISHSessionDelegate",
				"SoundAnalysis.ISNResultsObserving",
				"Speech.ISFSpeechRecognitionTaskDelegate",
				"Speech.ISFSpeechRecognizerDelegate",
				"SpriteKit.ISKPhysicsContactDelegate",
				"SpriteKit.ISKSceneDelegate",
				"SpriteKit.ISKViewDelegate",
				"SpriteKit.ISKWarpable",
				"StoreKit.ISKCloudServiceSetupViewControllerDelegate",
				"StoreKit.ISKOverlayDelegate",
				"StoreKit.ISKPaymentQueueDelegate",
				"StoreKit.ISKPaymentTransactionObserver",
				"StoreKit.ISKProductsRequestDelegate",
				"StoreKit.ISKRequestDelegate",
				"StoreKit.ISKStoreProductViewControllerDelegate",
				"TVMLKit.ITVApplicationControllerDelegate",
				"TVMLKit.ITVBrowserViewControllerDataSource",
				"TVMLKit.ITVBrowserViewControllerDelegate",
				"TVMLKit.ITVDocumentViewControllerDelegate",
				"TVMLKit.ITVInterfaceCreating",
				"TVMLKit.ITVPlaybackEventMarshaling",
				"TVServices.ITVTopShelfProvider",
				"TVUIKit.ITVCollectionViewDelegateFullScreenLayout",
				"TVUIKit.ITVLockupViewComponent",
				"UIKit.INSCollectionLayoutContainer",
				"UIKit.INSCollectionLayoutEnvironment",
				"UIKit.INSCollectionLayoutVisibleItem",
				"UIKit.INSLayoutManagerDelegate",
				"UIKit.INSTextAttachmentContainer",
				"UIKit.INSTextAttachmentLayout",
				"UIKit.INSTextContentManagerDelegate",
				"UIKit.INSTextContentStorageDelegate",
				"UIKit.INSTextElementProvider",
				"UIKit.INSTextLayoutManagerDelegate",
				"UIKit.INSTextLayoutOrientationProvider",
				"UIKit.INSTextLocation",
				"UIKit.INSTextSelectionDataSource",
				"UIKit.INSTextStorageDelegate",
				"UIKit.INSTextStorageObserving",
				"UIKit.INSTextViewportLayoutControllerDelegate",
				"UIKit.IUIAccelerometerDelegate",
				"UIKit.IUIAccessibilityContainer",
				"UIKit.IUIAccessibilityContainerDataTable",
				"UIKit.IUIAccessibilityContainerDataTableCell",
				"UIKit.IUIAccessibilityContentSizeCategoryImageAdjusting",
				"UIKit.IUIAccessibilityIdentification",
				"UIKit.IUIAccessibilityReadingContent",
				"UIKit.IUIActionSheetDelegate",
				"UIKit.IUIActivityItemsConfigurationProviding",
				"UIKit.IUIActivityItemsConfigurationReading",
				"UIKit.IUIActivityItemSource",
				"UIKit.IUIAdaptivePresentationControllerDelegate",
				"UIKit.IUIAlertViewDelegate",
				"UIKit.IUIApplicationDelegate",
				"UIKit.IUIBarPositioning",
				"UIKit.IUIBarPositioningDelegate",
				"UIKit.IUICalendarSelectionMultiDateDelegate",
				"UIKit.IUICalendarSelectionSingleDateDelegate",
				"UIKit.IUICalendarViewDelegate",
				"UIKit.IUICGFloatTraitDefinition",
				"UIKit.IUICloudSharingControllerDelegate",
				"UIKit.IUICollectionViewDataSource",
				"UIKit.IUICollectionViewDataSourcePrefetching",
				"UIKit.IUICollectionViewDelegate",
				"UIKit.IUICollectionViewDelegateFlowLayout",
				"UIKit.IUICollectionViewDragDelegate",
				"UIKit.IUICollectionViewDropCoordinator",
				"UIKit.IUICollectionViewDropDelegate",
				"UIKit.IUICollectionViewDropItem",
				"UIKit.IUICollectionViewDropPlaceholderContext",
				"UIKit.IUICollisionBehaviorDelegate",
				"UIKit.IUIColorPickerViewControllerDelegate",
				"UIKit.IUIConfigurationState",
				"UIKit.IUIContentConfiguration",
				"UIKit.IUIContentContainer",
				"UIKit.IUIContentSizeCategoryAdjusting",
				"UIKit.IUIContentView",
				"UIKit.IUIContextMenuInteractionAnimating",
				"UIKit.IUIContextMenuInteractionCommitAnimating",
				"UIKit.IUIContextMenuInteractionDelegate",
				"UIKit.IUICoordinateSpace",
				"UIKit.IUIDataSourceModelAssociation",
				"UIKit.IUIDataSourceTranslating",
				"UIKit.IUIDocumentBrowserViewControllerDelegate",
				"UIKit.IUIDocumentInteractionControllerDelegate",
				"UIKit.IUIDocumentMenuDelegate",
				"UIKit.IUIDocumentPickerDelegate",
				"UIKit.IUIDragAnimating",
				"UIKit.IUIDragDropSession",
				"UIKit.IUIDragInteractionDelegate",
				"UIKit.IUIDragSession",
				"UIKit.IUIDropInteractionDelegate",
				"UIKit.IUIDropSession",
				"UIKit.IUIDynamicAnimatorDelegate",
				"UIKit.IUIDynamicItem",
				"UIKit.IUIEditMenuInteractionAnimating",
				"UIKit.IUIEditMenuInteractionDelegate",
				"UIKit.IUIFindInteractionDelegate",
				"UIKit.IUIFocusAnimationContext",
				"UIKit.IUIFocusEnvironment",
				"UIKit.IUIFocusItem",
				"UIKit.IUIFocusItemContainer",
				"UIKit.IUIFocusItemScrollableContainer",
				"UIKit.IUIFontPickerViewControllerDelegate",
				"UIKit.IUIGestureRecognizerDelegate",
				"UIKit.IUIGuidedAccessRestrictionDelegate",
				"UIKit.IUIImagePickerControllerDelegate",
				"UIKit.IUIIndirectScribbleInteractionDelegate",
				"UIKit.IUIInputViewAudioFeedback",
				"UIKit.IUIInteraction",
				"UIKit.IUIItemProviderPresentationSizeProviding",
				"UIKit.IUIKeyInput",
				"UIKit.IUILargeContentViewerInteractionDelegate",
				"UIKit.IUILargeContentViewerItem",
				"UIKit.IUILayoutGuideAspectFitting",
				"UIKit.IUILayoutSupport",
				"UIKit.IUILetterformAwareAdjusting",
				"UIKit.IUILookToDictateCapable",
				"UIKit.IUIMenuBuilder",
				"UIKit.IUIMenuLeaf",
				"UIKit.IUIMutableTraits",
				"UIKit.IUINavigationBarDelegate",
				"UIKit.IUINavigationControllerDelegate",
				"UIKit.IUINavigationItemRenameDelegate",
				"UIKit.IUINSIntegerTraitDefinition",
				"UIKit.IUIObjectTraitDefinition",
				"UIKit.IUIPageControlProgressDelegate",
				"UIKit.IUIPageControlTimerProgressDelegate",
				"UIKit.IUIPageViewControllerDataSource",
				"UIKit.IUIPageViewControllerDelegate",
				"UIKit.IUIPasteConfigurationSupporting",
				"UIKit.IUIPencilInteractionDelegate",
				"UIKit.IUIPickerViewAccessibilityDelegate",
				"UIKit.IUIPickerViewDataSource",
				"UIKit.IUIPickerViewDelegate",
				"UIKit.IUIPointerInteractionAnimating",
				"UIKit.IUIPointerInteractionDelegate",
				"UIKit.IUIPopoverBackgroundViewMethods",
				"UIKit.IUIPopoverControllerDelegate",
				"UIKit.IUIPopoverPresentationControllerDelegate",
				"UIKit.IUIPopoverPresentationControllerSourceItem",
				"UIKit.IUIPreviewActionItem",
				"UIKit.IUIPreviewInteractionDelegate",
				"UIKit.IUIPrinterPickerControllerDelegate",
				"UIKit.IUIPrintInteractionControllerDelegate",
				"UIKit.IUIResponderStandardEditActions",
				"UIKit.IUISceneDelegate",
				"UIKit.IUIScreenshotServiceDelegate",
				"UIKit.IUIScribbleInteractionDelegate",
				"UIKit.IUIScrollViewAccessibilityDelegate",
				"UIKit.IUIScrollViewDelegate",
				"UIKit.IUISearchBarDelegate",
				"UIKit.IUISearchControllerDelegate",
				"UIKit.IUISearchDisplayDelegate",
				"UIKit.IUISearchResultsUpdating",
				"UIKit.IUISearchSuggestion",
				"UIKit.IUISearchTextFieldDelegate",
				"UIKit.IUISearchTextFieldPasteItem",
				"UIKit.IUIShapeProvider",
				"UIKit.IUISheetPresentationControllerDelegate",
				"UIKit.IUISheetPresentationControllerDetentResolutionContext",
				"UIKit.IUISplitViewControllerDelegate",
				"UIKit.IUISpringLoadedInteractionBehavior",
				"UIKit.IUISpringLoadedInteractionContext",
				"UIKit.IUISpringLoadedInteractionEffect",
				"UIKit.IUISpringLoadedInteractionSupporting",
				"UIKit.IUIStateRestoring",
				"UIKit.IUITabBarControllerDelegate",
				"UIKit.IUITabBarDelegate",
				"UIKit.IUITableViewDataSource",
				"UIKit.IUITableViewDataSourcePrefetching",
				"UIKit.IUITableViewDelegate",
				"UIKit.IUITableViewDragDelegate",
				"UIKit.IUITableViewDropCoordinator",
				"UIKit.IUITableViewDropDelegate",
				"UIKit.IUITableViewDropItem",
				"UIKit.IUITableViewDropPlaceholderContext",
				"UIKit.IUITextCursorView",
				"UIKit.IUITextDocumentProxy",
				"UIKit.IUITextDragDelegate",
				"UIKit.IUITextDraggable",
				"UIKit.IUITextDragRequest",
				"UIKit.IUITextDropDelegate",
				"UIKit.IUITextDroppable",
				"UIKit.IUITextDropRequest",
				"UIKit.IUITextFieldDelegate",
				"UIKit.IUITextFormattingCoordinatorDelegate",
				"UIKit.IUITextInput",
				"UIKit.IUITextInputDelegate",
				"UIKit.IUITextInputTokenizer",
				"UIKit.IUITextInputTraits",
				"UIKit.IUITextInteractionDelegate",
				"UIKit.IUITextPasteConfigurationSupporting",
				"UIKit.IUITextPasteDelegate",
				"UIKit.IUITextPasteItem",
				"UIKit.IUITextSearchAggregator",
				"UIKit.IUITextSearching",
				"UIKit.IUITextSelectionDisplayInteractionDelegate",
				"UIKit.IUITextSelectionHandleView",
				"UIKit.IUITextSelectionHighlightView",
				"UIKit.IUITextViewDelegate",
				"UIKit.IUITimingCurveProvider",
				"UIKit.IUIToolTipInteractionDelegate",
				"UIKit.IUITraitChangeObservable",
				"UIKit.IUITraitDefinition",
				"UIKit.IUITraitEnvironment",
				"UIKit.IUITraitOverrides",
				"UIKit.IUIUserActivityRestoring",
				"UIKit.IUIVideoEditorControllerDelegate",
				"UIKit.IUIViewAnimating",
				"UIKit.IUIViewControllerAnimatedTransitioning",
				"UIKit.IUIViewControllerContextTransitioning",
				"UIKit.IUIViewControllerInteractiveTransitioning",
				"UIKit.IUIViewControllerPreviewing",
				"UIKit.IUIViewControllerPreviewingDelegate",
				"UIKit.IUIViewControllerTransitionCoordinator",
				"UIKit.IUIViewControllerTransitionCoordinatorContext",
				"UIKit.IUIViewControllerTransitioningDelegate",
				"UIKit.IUIViewImplicitlyAnimating",
				"UIKit.IUIWebViewDelegate",
				"UIKit.IUIWindowSceneDelegate",
				"UserNotifications.IUNUserNotificationCenterDelegate",
				"UserNotificationsUI.IUNNotificationContentExtension",
				"VideoSubscriberAccount.IVSAccountManagerDelegate",
				"Vision.IVNFaceObservationAccepting",
				"Vision.IVNRequestProgressProviding",
				"Vision.IVNRequestRevisionProviding",
				"VisionKit.IVNDocumentCameraViewControllerDelegate",
				"WatchConnectivity.IWCSessionDelegate",
				"WebKit.IDomEventListener",
				"WebKit.IDomEventTarget",
				"WebKit.IDomNodeFilter",
				"WebKit.IWebDocumentRepresentation",
				"WebKit.IWebDownloadDelegate",
				"WebKit.IWebFrameLoadDelegate",
				"WebKit.IWebOpenPanelResultListener",
				"WebKit.IWebPolicyDecisionListener",
				"WebKit.IWebPolicyDelegate",
				"WebKit.IWebResourceLoadDelegate",
				"WebKit.IWebUIDelegate",
				"WebKit.IWKDownloadDelegate",
				"WebKit.IWKHttpCookieStoreObserver",
				"WebKit.IWKNavigationDelegate",
				"WebKit.IWKPreviewActionItem",
				"WebKit.IWKScriptMessageHandler",
				"WebKit.IWKScriptMessageHandlerWithReply",
				"WebKit.IWKUIDelegate",
				"WebKit.IWKUrlSchemeHandler",
				"WebKit.IWKUrlSchemeTask",
#endif
			};
			var unexpectedFailures = found.Except (expectedFailures);

			if (unexpectedFailures.Any ()) {
				Console.WriteLine ("Protocols missing 'BackwardsCompatibleCodeGeneration = false':");
				foreach (var f in unexpectedFailures.OrderBy (v => v))
					Console.WriteLine ($"    {f}");
			}
			Assert.That (unexpectedFailures, Is.Empty, $"{unexpectedFailures.Count ()} new protocols found where 'BackwardsCompatibleCodeGeneration' should be set to 'false'.");
		}
	}
}
